/* Nombre del Paquete: Paquete para la Gestion del personal
 * Proposito: manejo de utilidades para el personal del cade
 * Procedimientos contenidos:
 * Nueva Emergencia
 * existe
 */
CREATE OR REPLACE PACKAGE "SISTEMACADE"."MANEJOEMERGENCIA"
AS
  FUNCTION nuevaEmergencia
  (fecha DATE, hora VARCHAR2, detalles VARCHAR2,
   lugar VARCHAR2, matricula VARCHAR2, cedulaPacienteExterno NUMBER, nombre VARCHAR2, apellido VARCHAR2)
   RETURN NUMBER;

  FUNCTION existePaciente
     (cedula NUMBER) 
  RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY "SISTEMACADE"."MANEJOEMERGENCIA" 
AS
  FUNCTION existePaciente(cedula NUMBER) RETURN NUMBER IS  
   CURSOR cur_paciente IS SELECT PE.nombre 
   FROM PACIENTE_EXTERNO PE
   WHERE PE.cedulapacienteexterno = cedula;
   
   reg_pac cur_paciente%ROWTYPE;
   total NUMBER :=0;
   
   BEGIN
      FOR reg_pac IN cur_paciente LOOP
         total := total + 1;
	    END LOOP;
    
      DBMS_OUTPUT.put_line('Pacientes externos: '||total);
      RETURN total;
   END;

  FUNCTION nuevaEmergencia 
  (fecha DATE, hora VARCHAR2, detalles VARCHAR2,
   lugar VARCHAR2, matricula VARCHAR2, cedulaPacienteExterno NUMBER, nombre VARCHAR2, apellido VARCHAR2) RETURN NUMBER 
    IS
   totalPE NUMBER := 0;
   idSeq NUMBER:=0;
   BEGIN
      totalPE := existePaciente(cedulaPacienteExterno);
      IF totalPE = 0 THEN 
        INSERT INTO SISTEMACADE.PACIENTE_EXTERNO(CEDULAPACIENTEEXTERNO,NOMBRE,APELLIDO) 
        VALUES(cedulaPacienteExterno,nombre,apellido);
      END IF;
      SELECT SEQ_IDEMERGENCIA.nextval INTO idSeq FROM dual; 
      INSERT INTO SISTEMACADE.EMERGENCIA(IDEMERGENCIA, FECHA, HORA, DETALLES, LUGAR, MATRICULA, CEDULAPACIENTEEXTERNO)
      VALUES(SEQ_IDEMERGENCIA.nextval, fecha, TO_TIMESTAMP(hora,'HH24:MI'), detalles, lugar, matricula, cedulaPacienteExterno);
         DBMS_OUTPUT.PUT_LINE ('El emergencia ha sido agregada con exito' ); 
         RETURN idSeq + 1;
   END;
END;